package com.linkgie.galaxyframework.security.ca;

import com.linkgie.galaxyframework.crypto.Signature;
import com.linkgie.galaxyframework.utils.bean.BeanProperty;

/**
 * 证书；
 */
public interface Certificate extends Authorization{

    /**
     * 证书ID；
     * 
     * <p>
     * 证书ID是对当前证书的授权信息（ 接口 {@link Authorization} ）生成的摘要；
     * 
     * @return
     */
    String getUid();

    /**
     * 证书格式的版本；
     * 
     * @return
     */
    String getVersion();

    /**
     * 发行方对证书的签名；
     * 
     * <p>
     * 签名内容是证书ID；
     * 
     * @return
     */
    @BeanProperty(converter=SignatureConverter.class)
    Signature getSignature();

    /**
     * 发行方的证书；
     * 
     * <p>
     * 如果当前证书是自签名证书，则返回 null ，此情况下，可用当前证书公钥（{@link #getPublicKey()}）
     * 验证证书签名({@link #getSignature()}) ；
     * 
     * @return
     */
    Certificate getIssuer();

}
